import axios from "axios";

const service = axios.create({
  baseURL: process.env.VUE_APP_BASEURL,
  timeout: 15000
});

// let pending = []; //声明一个数组用于存储每个请求的取消函数和axios标识
// let cancelToken = axios.CancelToken;
// let removePending = (config) => {
//   for (let p in pending) {
//     if (pending[p].u === config.url + '&' + config.method) { //当当前请求在数组中存在时执行函数体
//       pending[p].f('请求已取消'); //执行取消操作
//       pending.splice(p, 1);
//     }
//   }
// }

// // http请求拦截器
// service.interceptors.request.use(config => {
//   removePending(config); //在一个axios发送前执行一下取消操作
//   config.cancelToken = new cancelToken((c) => {
//     // 这里的axios标识我是用请求地址&请求方式拼接的字符串，当然你可以选择其他的一些方式
//     pending.push({
//       u: config.url + '&' + config.method,
//       f: c
//     });
//   });

//   return config
// }, error => {
//   return Promise.reject(error)
// })

// // http响应拦截器
// service.interceptors.response.use(data => {
//   removePending(data.config); //在一个axios响应后再执行一下取消操作，把已经完成的请求从pending中移除
//   return data;
// }, error => {
//   if (axios.isCancel(error)) {
//     debugger;
//     console.log('request cancel ', error.message);
//     return new Promise(() => {})
//   }
//   return Promise.reject(error)
// })


// // http request 拦截器
// service.interceptors.request.use(
//   config => {
//     console.log(config, 1)
//     return config;
//   },
//   error => {
//     return Promise.reject(error);
//   }
// );

// // http response 拦截器
// service.interceptors.response.use(
//   response => {
//     const code = response.data.code;
//     if (code === "500") {
//       Notification.error({
//         title: "提示",
//         message: "服务器内部错误，请稍后再试！",
//         duration: 1500
//       });
//     }
//     return response;
//   },
//   error => {
//     Notification.error({
//       title: "提示",
//       message: "服务器连接异常，请稍后再试！",
//       duration: 3000
//     });
//     return Promise.reject(error);
//   }
// );

/**
 * 封装axios请求
 * @param options 请求参数
 * @return promise
 */

export function get(url, params) {
  return new Promise((resolve, reject) => {
    service.get(url, {
        params: params
      })
      .then(response => {
        resolve(response.data);
      })
      .catch(err => {
        reject(err);
      });
  });
}

export function post(url, data) {
  return new Promise((resolve, reject) => {
    //axios的post请求
    service.post(url, this.$qs.stringify(data)).then(
      response => {
        resolve(response.data);
      },
      err => {
        reject(err);
      }
    );
  });
}